package com.tedu.api.thread;

import com.sun.scenario.effect.impl.sw.java.JSWBlend_MULTIPLYPeer;
import com.sun.xml.internal.bind.v2.runtime.Name;
import org.junit.Test;

import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * Lambda表达式：支持接口、抽象类【匿名内部类】创建
 *              -支持集合遍历-
 */
 public class LambdaAPI {

  //  Lambda表达式： -支持集合遍历 List\Set存值方式一致-
    @Test
    public void testList(){
        //List集合：重复并有序---存数据【账号信息，IP地址】
        List<String> list=new ArrayList<>();
        list.add("lwx");
        list.add("963741");
        list.add("17717743069");
        //查看集合信息--遍历，遍历三种：普通for、增强for、forEach方法
        for(String name:list){
            System.out.println("增强for集合元素："+name);
        }
        //Lambda表达式支持集合----forEach(Lambda表达式)
        //list.forEach(name-> System.out.println(name));
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String names) {
                System.out.println(names);
            }
        });
        }
  //Lambda表达式：支持集合遍历Map  键值对存值
   /* @Test
    public void testMap(){
        Map<Integer,String> map=new HashMap<>();
        map.put(1,"账号");
        map.put(2,"密码");
        map.put(3,"手机号码");
        map.forEach(new BiConsumer<Integer, String>() {
            @Override
            public void accept(Integer integer, String s) {
                System.out.println("键："+integer+"\n"+"值:"+s);
            }
        });
        //map保存"Entry:键值对"    forEach()转换成Lambda

    }*/
   @Test
    public void testMap(){
        Map<Integer,String> map=new HashMap<>();
        map.put(1,"账号");
        map.put(2,"密码");
        map.put(3,"手机号码");
        map.forEach(new BiConsumer<Integer, String>() {
            @Override
            public void accept(Integer integer, String s) {
                System.out.println("键："+integer+"\n"+"值:"+s);
            }
        });
        //map保存"Entry:键值对"    forEach()转换成Lambda
     map.forEach((integer, s) -> System.out.println("键："+integer+"\n"+"值:"+s));
    }
    /**作业   （周二之前交）
     * 单元测试：testLambdaHomeWork1
     * 1.线程两种创建方式：使用Lambda表达式完成
     * 2.找集合中：ListAPI:单元测试名：testSort:使用Lambda表达式完成
     * 3.找IO流----File类----“FilterAPI”(先转换成匿名内部类再转成Lambda):使用Lambda表达式完成
     *                                                            【5行完成】
     * 4.找IO流----File类----“FilterAPI”(先转换成匿名内部类再转成Lambda):使用Lambda表达式完成
     *                                                            【2行完成】
     */

    /*testLambdaHomeWork1*/
            /*2*/
            @Test
            public void testLambdaHomeWork1() {
                //2.找集合中：ListAPI:单元测试名：testSort:使用Lambda表达式完成
                List<String> list = new ArrayList<>();
                list.add("阿西吧~");
                list.add("搜嘎斯内~");
                list.add("哟西!");
                Collections.sort(list);  //排序：针对数值
                System.out.println("排序后集合：" + list);
                //需求：按照文字长短进行排序  重载sort方法
                //创建比较器接口对象 【匿名内部类】
                //比较器对象内部提供方法：针对集合排序操作【交换规则】
           /* Comparator<String> com=new Comparator<String>() {
                //定义比较器规则：按照汉字长度排序---交换操作compare方法完成
                public int compare(String o1, String o2) {
                    return o1.length()-o2.length();
                }
            };*/
                //比较器：规定文字短在前规则，使用比较器规则
                Collections.sort(list, (o1, o2) -> o1.length() - o2.length());
                System.out.println("按照文字长短进行集合排序：" + list);

            }
 }







